<html>
<header>
    <title>SimplifyDb</title>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport"
          content="width=device-width, minimum-scale=1.0, initial-scale=1.0, maximum-scale=1.0, user-scalable=0"/>
</header>
<body>
<p>
<p align="center">
    <img src="./docs/SimplifyDb.png" width="400">
</p>
<p align="center">
    <a target="blank" href="https://mvnrepository.com/artifact/cn.simplifydb/simplifydb">
        <img src="https://img.shields.io/maven-metadata/v/http/central.maven.org/maven2/cn/simplifydb/simplifydb/maven-metadata.xml.svg"></img>
    </a>
    <a target="blank" href="http://www.apache.org/licenses/LICENSE-2.0.html">
        <img src="http://img.shields.io/:license-apache-blue.svg"></img>
    </a>
    <a target="blank" href="https://www.oracle.com/technetwork/java/javase/downloads/index.html">
        <img src="https://img.shields.io/badge/JDK-1.8+-green.svg"></img>
    </a>
    <a target="blank" href="https://travis-ci.org/jiangzeyin/SimplifyDb">
        <img src="https://travis-ci.org/jiangzeyin/SimplifyDb.svg?branch=master"></img>
    </a>
</p></p>


<h1>SimplifyDb</h1>

<blockquote><p>在java 中我们有多种方式操作数据库，但是如果只是为了简单处理使用一些框架，在使用中还是显得麻烦。这里就整理一个简单快速操作数据库的一种方案</p></blockquote>

<h2>简介</h2>

<p>SimplifyDb 是一个Java基于druid的一款Builder简化写sql语句操作的框架。本项目主要采用反射读写需要操作的实体和表，同时项目还是提供多种主键生成器和自定义主键生成器接口方便用户根据实际业务扩展主键生成器</p>

<blockquote><p>项目特点
    1. 快速配置和操作多数据库
    2. 多数据源配置自动切换
    3. 提供多种主键生成器以及自定义主键生成器
    4. 全局统一记录数据创建人和修改人
    5. 快速配置逻辑删除功能
    6. 写操作支持异步执行
    7. 全局还原html实体</p></blockquote>

<h4>使用示例：<a href="src/test/java/cn/simplifydb">src/test/java/cn/simplifydb</a></h4>

<h2>文档</h2>

<p><a href="https://gitee.com/jiangzeyin/dbutil/wikis">参考文档</a></p>

<p><a href="https://apidoc.gitee.com/jiangzeyin/dbutil/">参考API</a></p>

<p><a href="/src/test/java/cn/simplifydb/README.md">示例代码</a></p>

<p><a href="http://blog.csdn.net/column/details/17021.html">博客专栏</a></p>

<h2>安装</h2>

<h3>Maven</h3>

<p>在项目的pom.xml的dependencies中加入以下内容:</p>

<p><code>xml
    <dependency>
        <groupId>cn.simplifydb</groupId>
        <artifactId>simplifydb</artifactId>
        <version>version</version>
    </dependency>
</code>
    注：VERSION 请更换为公共maven库最新的版本号
</p>

<p><a href="https://mvnrepository.com/artifact/cn.simplifydb/simplifydb">https://mvnrepository.com/artifact/cn.simplifydb/simplifydb</a>
</p>

<h2>版本变更</h2>

<ul>
    <li><a href="/CHANGELOG.md">Release版本变更说明</a></li>
    <li><a href="/CHANGELOG-1.x.md">1.x版本变更说明</a></li>
</ul>

<h3>提供bug反馈或建议</h3>

<ul>
    <li><a href="https://gitee.com/iangzeyin/dbutil">码云</a> -&gt; <a href="https://gitee.com/iangzeyin/dbutil/issues">issues</a>
    </li>
    <li><a href="https://github.com/jiangzeyin/SimplifyDb">Github</a> -&gt; <a
            href="https://github.com/jiangzeyin/SimplifyDb/issues">issues</a></li>
</ul>

<h2>项目特点描述：(使用druid 连接池)</h2>

<p>1.支持多数据源</p>

<p>2.多数据源支持读写分离 和 随机落取</p>

<p>3.接口形式记录日志</p>

<p>4.接口形式获取当前操作用户</p>

<p>5.增 删 改 可以使用异步执行</p>

<p>6.对外提供 增 删 改 执行过程中的接口调用</p>

<p>7.自动记录当前最后修改数据人 创建数据人和时间</p>

<p>8.自动记录数据最后修改数据时间（和第5点不冲突）</p>

<p>欢迎━(<em>｀∀´</em>)ノ亻!大家测评</p>

<p>cn.simplifydb.database.config.DataSourceConfig 工具使用配置类</p>

<p>cn.simplifydb.system.DbLog 工具日志为了各个项目适配，使用了接口形式来提供记录日志</p>

<p>cn.simplifydb.database.run.read.IsExists 判断是否存在</p>

<p>cn.simplifydb.database.run.read.Select 多种方式查询</p>

<p>cn.simplifydb.database.run.read.SelectFunction 查询函数</p>

<p>cn.simplifydb.database.run.read.SelectPage 分页查询</p>

<p>cn.simplifydb.database.run.write.Insert 添加数据</p>

<p>cn.simplifydb.database.run.write.Remove 删除数据</p>

<p>cn.simplifydb.database.run.write.Update 修改数据</p>

<p>cn.simplifydb.database.run.write.Transaction 事物操作</p>

<p>示例配置：(db.properties)</p>

<p><code></code>`
    sourceTag=core
    configPath=file:/test/read.properties
    systemKey=com.yoke <br/>systemKeyColumn=url,username,password</p>

<h1>lastModify.time=UNIX_TIMESTAMP(NOW())</h1>

<p>lastModify.class=com.yoke.entity.EditOptBaseEntity,com.yoke.entity.AdminOptBaseEntity
    lastModify.column.user=lastModifyUser
    lastModify.column.time=lastModifyTime</p>

<h1>create.class=com.yoke.entity.AdminOptBaseEntity</h1>

<p>create.column.user=createUser</p>

<h1>systemColumn.pwd=pwd</h1>

<p>systemColumn.active=isDelete
    systemColumn.active.value=0
    systemColumn.inActive.value=1</p>

<h1>systemColumn.modify.status=true</h1>

<p>systemColumn.modify.column=modifyTime
    systemColumn.modify.time=UNIX_TIMESTAMP(NOW())</p>

<h1>systemColumn.notPutUpdate=modifyTime,isDelete,createTime,createUser,lastModifyUser,lastModifyTime,id</h1>

<p>systemColumn.columnDefaultValue=modifyTime:UNIX<em>TIMESTAMP(NOW()),createTime:UNIX</em>TIMESTAMP(NOW())
    systemColumn.writeDefaultRemove=createUser,lastModifyUser,lastModifyTime,id,isDelete
    systemColumn.readDefaultRemove=pwd
    systemColumn.selectDefaultColumns=*</p>

<h1>systemColumn.defaultRefKeyName=id</h1>

<p>systemColumn.defaultKeyName=id
    <code></code>`</p>

<p><strong>sourceTag,configPath 为必需字段</strong></p>

<p>其他字段均根据自己实际情况配置</p>

<p>systemKey 为configPath 中加密的密钥</p>

<p>systemKeyColumn 为configPath 中哪些字段是为加密的字段</p>

<p>实例配置：(file:/test/read.properties)</p>

<p><code>
    core.driver=com.mysql.jdbc.Driver
    core.url=1953342c4b
    core.username=12b0ecd
    core.password=9085ada2469
    core.init=true
    core.maxActive=10000
    core.validationQuery=SELECT &#39;x&#39;
    core.testOnReturn=false
    core.testOnBorrow=false
    core.testWhileIdle=true
    core.minIdle=30
    core.initialSize=1
    core.removeAbandoned=true
    core.removeAbandonedTimeout=60
    core.logAbandoned=true
</code></p>

<p>配置字段具体含义请 查看<a
        href="https://github.com/alibaba/druid/wiki/DruidDataSource%E9%85%8D%E7%BD%AE%E5%B1%9E%E6%80%A7%E5%88%97%E8%A1%A8">https://github.com/alibaba/druid/wiki/DruidDataSource%E9%85%8D%E7%BD%AE%E5%B1%9E%E6%80%A7%E5%88%97%E8%A1%A8</a>
</p>

<p><strong>初始化</strong>：</p>

<p><strong><code>1.先设置日志接口</code></strong></p>

<p>cn.simplifydb.system.DbLog.setDbLogInterface()</p>

<p>方法传入cn.simplifydb.system.DbLog.DbLogInterface 接口主要负责记录util 执行日志</p>

<p><strong><code>2.开始初始化数据库连接</code></strong></p>

<p>cn.simplifydb.database.config.DataSourceConfig.init() 参数为配置文件的路径</p>

<p>支持file: 、classpath: 、Properties</p>

<p><strong><code>3.设置实体转换数据库接口（根据class 获取该实体存在的数据源中）</code></strong></p>

<p>cn.simplifydb.database.DbWriteService.setWriteInterface()</p>

<p>方法传入cn.simplifydb.database.DbWriteService.WriteInterface 接口主要负责处理实体对应的数据源标记和实体数据库表名</p>

<h2>更多使用示例：<a href="src/test/java/cn/simplifydb">src/test/java/cn/simplifydb</a></h2>
</body>
</html>